/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package classes;

/**
 *
 * @author fabian
 */
public class Spielcontroller {

    private Spielfeld spielfeld;
    private Spieler spieler1;
    private Spieler spieler2;

    public Spielcontroller(Spielfeld spielfeld, Spieler spieler1, Spieler spieler2) {
        this.spielfeld = spielfeld;
        this.spieler1 = spieler1;
        this.spieler2 = spieler2;
    }

    public void start() throws Exception {
        spielfeld.clearSpielfeld();

        int spielerDran = (int) ((Math.random() * 2) + 1);

        while (true) {
            if (spielerDran == 1) {
                int spalte = 0;
                do {
                    spalte = spieler1.macheZug(spielfeld);
                } while (spielfeld.isSpalteVoll(spalte) | !(spielfeld.isInSpaltenRange(spalte)));
                spielfeld.platziereStein(spalte, spieler1.getNummer());
                spielerDran = 2;
            }
            if (isGewonnen()) {
                int spielergewinner = spielfeld.werHatGewonnen();
                System.out.println("Es gibt einen Gewinner: "+spielergewinner);
                System.out.println("-----");
                System.out.println(spielfeld.toString());
                System.out.println("-----");
                break;
            }
            if (spielerDran == 2) {
                int spalte = 0;
                do {
                    spalte = spieler2.macheZug(spielfeld);
                    // Chekmethode is in ragne
                } while (spielfeld.isSpalteVoll(spalte) | !(spielfeld.isInSpaltenRange(spalte)));
                spielfeld.platziereStein(spalte, spieler2.getNummer());
                spielerDran = 1;
            }
            if (isGewonnen()) {
                int spielergewinner = spielfeld.werHatGewonnen();
                System.out.println("Es gibt einen Gewinner..." + " --- " + spielergewinner);
                System.out.println("-----");
                System.out.println(spielfeld.toString());
                System.out.println("-----");
                break;
            }
        }
        spielfeld.clearSpielfeld();
        beendeSpiel();
    }

    private void beendeSpiel() {
        // information an die gui
    }

    private boolean isGewonnen() {
        if (0 == this.spielfeld.werHatGewonnen()) {
            return false;
        } else {
            return true;
        }
    }

    // ------ AUTO GENERATED STUFF
    public Spieler getSpieler1() {
        return spieler1;
    }

    public void setSpieler1(Spieler spieler1) {
        this.spieler1 = spieler1;
    }

    public Spieler getSpieler2() {
        return spieler2;
    }

    public void setSpieler2(Spieler spieler2) {
        this.spieler2 = spieler2;
    }

    public Spielfeld getSpielfeld() {
        return spielfeld;
    }

    public void setSpielfeld(Spielfeld spielfeld) {
        this.spielfeld = spielfeld;
    }
}